package org.example.service;

import org.example.dto.RestResult;
import org.example.dto.UserLoginDTO;
import org.example.dto.UserLoginRequest;
import org.example.dto.UserLogoutRequest;
import org.example.dto.UserRegisterRequest;
import org.example.dto.UserRegistrationDTO;
import org.example.exception.RestException;

public interface UserService {

    /**
     * 用户注册
     * @param request 用户注册信息
     * @return 注册结果
     */
    RestResult register(UserRegisterRequest request);

    /**
     * 用户注册
     * @param userRegistrationDTO 用户注册信息
     * @return 注册结果
     * @throws RestException 注册失败异常
     */
    RestResult register(UserRegistrationDTO userRegistrationDTO) throws RestException;

    /**
     * 用户登录
     * @param request 用户登录信息
     * @return 登录结果
     */
    RestResult login(UserLoginRequest request);

    /**
     * 用户登录
     * @param userLoginDTO 用户登录信息
     * @return 登录结果
     * @throws RestException 登录失败异常
     */
    RestResult login(UserLoginDTO userLoginDTO) throws RestException;

    /**
     * 用户登出
     * @param request 会话ID
     * @return 登出结果
     */
    RestResult logout(UserLogoutRequest request);

    /**
     * 用户登出
     * @param sessionId 会话ID
     * @return 登出结果
     * @throws RestException 登出失败异常
     */
    RestResult logout(String sessionId) throws RestException;
}